package com.pg.auth.service;

import com.pg.auth.model.dto.sysmenu.SysMenuDTO;
import com.pg.auth.model.dto.sysmenu.SysMenuReq;
import com.pg.auth.model.dto.sysmenu.SysMenuTreeVO;
import com.pg.auth.model.dto.sysmenu.SysMenuVO;
import com.pg.base.component.PageVO;
import com.pg.base.component.Pager;
import com.pg.base.vo.LoginVO;

import java.util.List;

/***
 * SysMenuService
 * @author : huhuaping
 * @Date : 2024-06-06 20:59:34
 */
public interface SysMenuService {

    /**
    *  分页查询
    * @param pageReq 查询条件
    * @return 分页对象
    */
    PageVO<SysMenuVO> page(Pager<SysMenuReq,SysMenuVO> pageReq);

    /**
     *  集合查询
     * @param sysMenuReq 查询条件
     * @return 集合
     */
    List<SysMenuVO> list(SysMenuReq sysMenuReq);

    /**
     * 根据ID查询SysMenu
     * @ param menuId 记录ID
     * @ return VO对象
     */
    SysMenuVO getById(Long menuId);


    /**
     * 新增
     * @param sysMenuDTO 新增数据对象
     * @param userVo  用户对象
     * @return id  记录主键ID
     */
    Long add(SysMenuDTO sysMenuDTO,LoginVO userVo);


    /**
     * 根据id修改
     * @param sysMenuDTO 修改数据对象
     * @return number 修改条数
     */
    Integer updateById(SysMenuDTO sysMenuDTO,LoginVO userVo);

    /**
     * 根据ID删除SysMenu
     * @param menuId 删除记录ID
     * @return 删除条数
     */
    int deleteById(Long menuId);

    /**
     *  查询菜单树
     * @param sysMenuReq
     * @return
     */
    List<SysMenuTreeVO> listMenuTree(SysMenuReq sysMenuReq);
}
